using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using Book.Blog.Core.DTOs;

namespace Book.Blog.Core.Interfaces
{
    public interface IStatisticsService
    {
        Task<StatisticsOverviewDTO> GetOverviewAsync(StatisticsRequestDTO request);
        Task<IEnumerable<PostStatDTO>> GetTopPostsAsync(DateTime? startDate, DateTime? endDate, int top);
        Task<IEnumerable<CategoryStatDTO>> GetTopCategoriesAsync(DateTime? startDate, DateTime? endDate, int top);
        Task<IEnumerable<TagStatDTO>> GetTopTagsAsync(DateTime? startDate, DateTime? endDate, int top);
        Task<IEnumerable<DailyStatisticsDTO>> GetDailyStatisticsAsync(DateTime? startDate, DateTime? endDate);
        Task<bool> RecordPageViewAsync(PageViewDTO pageView);
        Task<bool> RecordUserActionAsync(UserActionDTO userAction);
        Task<bool> GenerateDailyStatisticsAsync(DateTime date);
        Task CleanupOldDataAsync(DateTime before);
    }
} 